package main

import "fmt"

//defer 语句将延迟调用函数保存到列表上。defer 所在的函数返回后，将执行保存的延迟调用函数列表。
//
//defer 延迟函数有 3 个规则：
//
//在对 defer 语句求值时，将对 defer 延迟调用的函数的参数求值。
//defer 所在的函数返回后，将按照后进先出的顺序执行 defer 保存的延迟调用函数。
//defer 延迟调用函数可以读取并分配给返回函数的命名返回值。
func main() {
	//defer只能在函数内部使用
	//当函数内部出现多个defer时，会遵循后进先出的原则执行。
	defer fmt.Println("1")
	defer fmt.Println("3")
	defer fmt.Println("4")
	defer fmt.Println("4")
	defer fmt.Println("5")
	fmt.Println("2")
}
